]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
dateMenu: Make clock offsets relative to local time
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 11 Apr 2019 09:36:33 +0000 (11:36 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Sat, 13 Apr 2019 12:11:14 +0000 (12:11 +0000)
We recently added offsets to world clocks that represent the location's
timezone as UTC offset. However for most users, that representation is
overly technical and less helpful than the difference to their local time.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1157

js/ui/dateMenu.js

index f46ed2d3addb9701547e8f8b2f24c9ac1f511356..fb32fbb2f6a961ccb62a13a5a33d867da37658fd 100644 (file)
@@ -136,6 +136,8 @@ var WorldClocksSection = class WorldClocksSection {
         layout.attach(header, 0, 0, 2, 1);
         this.actor.label_actor = header;
 
+        let localOffset = GLib.DateTime.new_now_local().get_utc_offset();
+
         for (let i = 0; i < this._locations.length; i++) {
             let l = this._locations[i].location;
 
@@ -148,7 +150,8 @@ var WorldClocksSection = class WorldClocksSection {
 
             let time = new St.Label({ style_class: 'world-clocks-time' });
 
-            let offset = l.get_timezone().get_offset() / 60.;
+            let otherOffset = this._getTimeAtLocation(l).get_utc_offset();
+            let offset = (otherOffset - localOffset) / GLib.TIME_SPAN_HOUR;
             let fmt = (Math.trunc(offset) == offset) ? '%s%.0f' : '%s%.1f';
             let prefix = (offset >= 0) ? '+' : '-';
             let tz = new St.Label({ style_class: 'world-clocks-timezone',
@@ -181,11 +184,15 @@ var WorldClocksSection = class WorldClocksSection {
         }
     }
 
+    _getTimeAtLocation(location) {
+        let tz = GLib.TimeZone.new(location.get_timezone().get_tzid());
+        return GLib.DateTime.new_now(tz);
+    }
+
     _updateLabels() {
         for (let i = 0; i < this._locations.length; i++) {
             let l = this._locations[i];
-            let tz = GLib.TimeZone.new(l.location.get_timezone().get_tzid());
-            let now = GLib.DateTime.new_now(tz);
+            let now = this._getTimeAtLocation(l.location);
             l.actor.text = Util.formatTime(now, { timeOnly: true });
         }
     }